package com.gome.security.util.Base;
import java.security.Security;  
import org.bouncycastle.jce.provider.BouncyCastleProvider;  
import org.bouncycastle.util.encoders.UrlBase64;  
/** 
 *  
 * 使用bouncycastle扩展包进行base64为编码.此处是针对URLbase64算法的演示 
 * @kongqz 
 * 
 * urlbase64算法就是将浏览器中不允许出现的+=号给替换成-.这些符号
 * */  
public class UrlBase64Coder {  
      
    public final static String ENCODING="UTF-8";  
    /*** 
     * 进行urlBase64编码 
     * @param data 要编码的数据 
     * @return 编码后的数据 
     * */  
    public static String encode(String data) throws Exception{  
          
        Security.addProvider(new BouncyCastleProvider());  
          
        byte[] b =UrlBase64.encode(data.getBytes(ENCODING));  
        return new String(b,ENCODING);  
    }  
      
    /** 
     * 进行urlBase64解码 
     * @param data 待解码数据 
     * @return 解码后的数据 
     * */  
    public static String decode(String data) throws Exception{  
          
        Security.addProvider(new BouncyCastleProvider());  
          
        byte[] b=UrlBase64.decode(data.getBytes(ENCODING));  
        return new String(b,ENCODING);  
    }  
    /** 
     * @param args 
     * @throws Exception  
     */  
    public static void main(String[] args) throws Exception {  
          
        String tmp="java的urlbase64位加解密操作";  
        System.out.println("原文："+tmp);  
          
        String code=UrlBase64Coder.encode(tmp);  
        System.out.println("编码后："+code);  
          
        System.out.println("解码后："+UrlBase64Coder.decode(code));  
    }  
}